<!doctype html>
<html ng-app="myApp">
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular.js"></script>
</head>
<body>

  <div ng-controller="SomeController">
    {{ someBareValue }}
    <button ng-click="someAction()">Communicate to child</button>
    <div ng-controller="ChildController">
      {{ someBareValue }}
      <button ng-click="childAction()">Communicate to parent</button>
    </div>
  </div>

  <script>
    angular.module('myApp', [])
    .controller('SomeController', function($scope) {
      // anti-pattern, bare value
      $scope.someBareValue = 'hello computer';
      // set actions on $scope itself, this is okay
      $scope.someAction = function() {
        $scope.someBareValue = 'hello human, from parent';
      };
    })
    .controller('ChildController', function($scope) {
      $scope.childAction = function() {
        $scope.someBareValue = 'hello human, from child';
      };
    });
  </script>

</body>
</html>